package br.edu.univas.jobmanager.view;

import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

import br.edu.univas.jobmanager.controller.ControllerBackup;
import br.edu.univas.jobmanager.listener.BackupListener;

@SuppressWarnings("serial")
public class FrameBackup extends JFrame {
	private JButton _geraBackup;
	private JButton _recuperaBackup;
	private ControllerBackup _controller;
	private BackupListener _listener;
	

	public FrameBackup() {
		super("jobManager - Backup");
		_controller = new ControllerBackup();
		_listener = _controller.getBackupListener();

		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setLayout(new GridBagLayout());
		initialize();
		pack();
		setLocationRelativeTo(null);
	}

	private void initialize() {
		this.add(getGeraBackup());
		this.add(getRecuperaBackup());
	}
	
	//=== Inicio de gets para configurar os botões
	private JButton getGeraBackup() {
		if(_geraBackup == null){
			_geraBackup = new JButton("Gerar Backup");
			_geraBackup.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent arg0) {
					try {
						_listener.geraBackupAction();
						JOptionPane.showMessageDialog(null, "Backup gerado com sucesso\n É necessário reiniciar a aplicação!", "Sucesso", JOptionPane.INFORMATION_MESSAGE);
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			});
		}
		return _geraBackup;
	}
	
	private JButton getRecuperaBackup() {
		if(_recuperaBackup == null){
			_recuperaBackup = new JButton("Recuperar Backup");
			_recuperaBackup.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent e) {
					try {
						_listener.recuperaBackupAction();
						JOptionPane.showMessageDialog(null, "Backup restaurado com sucesso\n É necessário reiniciar a aplicação!", "Sucesso", JOptionPane.INFORMATION_MESSAGE);
						
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}
			});
		}
		return _recuperaBackup;
	}
	//=== Fim dos gets para configurar os botões
	
	/*//=== Main para teste
	public static void main(String[] args) {
		new FrameBackup().setVisible(true);
	}
	//=== Fim do Main para teste
	 */
	}